package com.delio.client.pagos.pagoadelantos;

import com.delio.client.idioma.DelioConstants;

import com.delio.client.util.MensajeData;
import com.delio.client.util.Utilities;

import com.extjs.gxt.ui.client.data.BaseFilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class PagoAdelantos {
	private static PagoAdelantoServiceAsync ms = GWT.create(PagoAdelantoService.class);
	private static DelioConstants k = GWT.create(DelioConstants.class);

	public static ListStore<BeanModel> store;
	public static PagingLoader<PagingLoadResult<ModelData>> loader;

	public static Integer pagoadelanto_id;
	public static Integer contrato_id;
	public static Integer periodo;
	 public static PanelNuevoPagoAdelanto panelnuevopagoadelanto;

	public static void getPaginate() {
		RpcProxy<PagingLoadResult<PagoAdelanto>> proxy = new RpcProxy<PagingLoadResult<PagoAdelanto>>() {

			@Override
			protected void load(Object loadConfig, 	AsyncCallback<PagingLoadResult<PagoAdelanto>> callback) {
				ms.paginatePagoAdelanto((FilterPagingLoadConfig) loadConfig, contrato_id, periodo, callback);
			}
		};

		loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy,
				new BeanModelReader()) {

			protected Object newLoadConfig() {
				BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();
				return config;
			}

		};

		loader.setRemoteSort(true);
		store = new ListStore<BeanModel>(loader);

	}
	
	
	
	public static void save(PagoAdelanto emp) {
		pagoadelanto_id = emp.getId();
		emp.setContrato_id(contrato_id);
		emp.setPeriodo(periodo);
	
		ms.save(emp, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);
			}

			@Override
			public void onSuccess(MensajeData result) {
				
			
				if (result.guardado) {
				
//					if (pagoadelanto_id != null)
//						store.rejectChanges();
//					else
						loader.load(0, Utilities.itemsPerPage);
                
				panelnuevopagoadelanto.reset();	

				} else {
					
						MessageBox.alert(k.sistemaDelio(),k.adelantoNoGuardado(), null);
				}
			}
		});

	}
	
	
	public static void delete(Integer id,Integer empleado_id,Integer periodo) {
		ms.delete(id,empleado_id,periodo, new AsyncCallback<MensajeData>() {

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {
					Integer offset = loader.getOffset();
					loader.load(offset, Utilities.itemsPerPage);
				} 
				else
					MessageBox.alert(k.sistemaDelio(), k.adelantoNoEliminado(),
							null);

			}

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}
		});

	}
}
